<?php

namespace app\admin\model;

use app\common\model\TimeModel;

use think\facade\Log;
use DateTime;

class EpbpCyl extends TimeModel
{

    //105-oracl
    protected $connection = 'oracle';
    protected $table = 'SYSTEM.YS_DBA01_BN';

    //local
    //protected $table = 'b_dba01_bn';

    ///格式化日期
    public function getRQAttr($value)
    {
        return $this->parseChineseDate($value, false);;
    }

    /**
     * 解析包含中文月份的日期字符串（如 "25-6月 -25"）
     * @param string $dateStr Oracle返回的日期字符串
     * @param bool $hasTime 是否包含时间
     * @return string 标准格式日期
     */
    private function parseChineseDate(string $dateStr, bool $hasTime = false): string
    {
        // 处理年份简写（如 "-25" 实际是 "2025"）
        $dateStr = preg_replace('/-(\d{2})\s*$/', ' 20$1', $dateStr);
        // 中文月份映射表
        $monthMap = [
            '10月' => '10',
            '11月' => '11',
            '12月' => '12', // 先处理两位数月份
            '1月' => '01',
            '2月' => '02',
            '3月' => '03',
            '4月' => '04',
            '5月' => '05',
            '6月' => '06',
            '7月' => '07',
            '8月' => '08',
            '9月' => '09'
        ];

        // 替换中文月份为数字
        foreach ($monthMap as $chinese => $number) {
            if (strpos($dateStr, $chinese) !== false) {
                $dateStr = str_replace($chinese, $number, $dateStr);
                break;
            }
        }
        // 处理日期格式（去掉多余的空格）
        $dateStr = preg_replace('/\s+/', '-', trim($dateStr));
        $date = DateTime::createFromFormat('d-m-Y', $dateStr);
        // 转换为标准格式
        if ($hasTime) {
            $timestamp = $date->getTimestamp();
            return $timestamp ? date('Y-m-d H:i:s', $timestamp) : $dateStr;
        } else {
            $timestamp = $date->getTimestamp();
            return $timestamp ? date('Y-m-d', $timestamp) : $dateStr;
        }
    }
}
